// confirm.js
const app = getApp();

Page({
  data: {
    contactInfo: {
      name: '',
      phone: '',
      isDefault: false
    },
    orderItems: [],
    selectedCoupon: null,
    remark: '',
    totalPrice: 0,
    discountAmount: 0,
    payAmount: 0,
    paymentMethod: 'wechat',
    userBalance: 0
  },

  onLoad: function() {
    // 检查登录状态
    this.checkLoginStatus();
    
    // 获取订单项
    this.getOrderItems();
    
    // 获取默认联系人
    this.getDefaultContact();
    
    // 获取用户余额
    this.getUserBalance();
    
    // 计算价格
    this.calculatePrice();
  },

  // 检查登录状态
  checkLoginStatus: function() {
    const token = wx.getStorageSync('token');
    if (!token) {
      wx.showModal({
        title: '提示',
        content: '请先登录后再进行下单',
        showCancel: false,
        success: (res) => {
          if (res.confirm) {
            wx.navigateTo({
              url: '/pages/login/login'
            });
          }
        }
      });
    }
  },

  // 获取订单项
  getOrderItems: function() {
    const orderItems = wx.getStorageSync('tempOrderItems') || [];
    
    if (orderItems.length === 0) {
      wx.showToast({
        title: '订单信息有误',
        icon: 'none'
      });
      
      setTimeout(() => {
        wx.navigateBack();
      }, 1500);
      
      return;
    }
    
    this.setData({
      orderItems: orderItems
    });
  },

  // 获取默认联系人
  getDefaultContact: function() {
    const contacts = wx.getStorageSync('contacts') || [];
    const defaultContact = contacts.find(item => item.isDefault);
    
    if (defaultContact) {
      this.setData({
        contactInfo: defaultContact
      });
    }
  },

  // 获取用户余额
  getUserBalance: function() {
    // 实际项目中应该从服务器获取数据
    // 这里使用模拟数据
    this.setData({
      userBalance: 0.00
    });
  },

  // 计算价格
  calculatePrice: function() {
    const orderItems = this.data.orderItems;
    let totalPrice = 0;
    
    // 计算商品总价
    orderItems.forEach(item => {
      totalPrice += item.price * item.quantity;
    });
    
    // 计算优惠金额
    const discountAmount = this.data.selectedCoupon ? this.data.selectedCoupon.amount : 0;
    
    // 计算应付金额
    const payAmount = totalPrice - discountAmount;
    
    this.setData({
      totalPrice: totalPrice.toFixed(2),
      discountAmount: discountAmount.toFixed(2),
      payAmount: payAmount.toFixed(2)
    });
  },

  // 姓名输入
  onNameInput: function(e) {
    this.setData({
      'contactInfo.name': e.detail.value
    });
  },

  // 手机号输入
  onPhoneInput: function(e) {
    this.setData({
      'contactInfo.phone': e.detail.value
    });
  },

  // 默认联系人切换
  onDefaultChange: function(e) {
    this.setData({
      'contactInfo.isDefault': e.detail.value
    });
  },

  // 选择联系人
  selectContact: function() {
    wx.navigateTo({
      url: '/pages/contact/list?select=true'
    });
  },

  // 减少数量
  decreaseQuantity: function(e) {
    const index = e.currentTarget.dataset.index;
    const orderItems = this.data.orderItems;
    
    if (orderItems[index].quantity > 1) {
      orderItems[index].quantity -= 1;
      
      this.setData({
        orderItems: orderItems
      });
      
      // 更新本地存储
      wx.setStorageSync('tempOrderItems', orderItems);
      
      // 重新计算价格
      this.calculatePrice();
    }
  },

  // 增加数量
  increaseQuantity: function(e) {
    const index = e.currentTarget.dataset.index;
    const orderItems = this.data.orderItems;
    
    orderItems[index].quantity += 1;
    
    this.setData({
      orderItems: orderItems
    });
    
    // 更新本地存储
    wx.setStorageSync('tempOrderItems', orderItems);
    
    // 重新计算价格
    this.calculatePrice();
  },

  // 选择优惠券
  selectCoupon: function() {
    wx.navigateTo({
      url: '/pages/coupon/list?select=true'
    });
  },

  // 备注输入
  onRemarkInput: function(e) {
    this.setData({
      remark: e.detail.value
    });
  },

  // 选择支付方式
  selectPayment: function(e) {
    const method = e.currentTarget.dataset.method;
    
    // 如果选择余额支付，检查余额是否足够
    if (method === 'balance') {
      const userBalance = parseFloat(this.data.userBalance);
      const payAmount = parseFloat(this.data.payAmount);
      
      if (userBalance < payAmount) {
        wx.showToast({
          title: '余额不足',
          icon: 'none'
        });
        return;
      }
    }
    
    this.setData({
      paymentMethod: method
    });
  },

  // 提交订单
  submitOrder: function() {
    // 表单验证
    if (!this.validateForm()) {
      return;
    }
    
    // 显示加载中
    wx.showLoading({
      title: '提交中',
    });
    
    // 构建订单数据
    const orderData = {
      contactInfo: this.data.contactInfo,
      orderItems: this.data.orderItems,
      coupon: this.data.selectedCoupon,
      remark: this.data.remark,
      totalPrice: this.data.totalPrice,
      discountAmount: this.data.discountAmount,
      payAmount: this.data.payAmount,
      paymentMethod: this.data.paymentMethod,
      createTime: new Date().getTime()
    };
    
    // 实际项目中应该提交到服务器
    // 这里模拟提交成功
    setTimeout(() => {
      wx.hideLoading();
      
      // 保存联系人
      this.saveContact();
      
      // 清除临时订单数据
      wx.removeStorageSync('tempOrderItems');
      
      // 生成订单号
      const orderId = 'YT' + new Date().getTime();
      
      // 跳转到支付页面
      wx.navigateTo({
        url: `/pages/order/payment?orderId=${orderId}&amount=${this.data.payAmount}&method=${this.data.paymentMethod}`
      });
    }, 1500);
    
    // 实际项目中的云函数调用
    // wx.cloud.callFunction({
    //   name: 'createOrder',
    //   data: orderData,
    //   success: res => {
    //     if (res.result && res.result.success) {
    //       // 保存联系人
    //       this.saveContact();
    //       
    //       // 清除临时订单数据
    //       wx.removeStorageSync('tempOrderItems');
    //       
    //       // 跳转到支付页面
    //       wx.navigateTo({
    //         url: `/pages/order/payment?orderId=${res.result.orderId}&amount=${this.data.payAmount}&method=${this.data.paymentMethod}`
    //       });
    //     } else {
    //       wx.showToast({
    //         title: res.result.message || '提交失败',
    //         icon: 'none'
    //       });
    //     }
    //   },
    //   fail: err => {
    //     console.error('创建订单失败', err);
    //     wx.showToast({
    //       title: '提交失败，请重试',
    //       icon: 'none'
    //     });
    //   },
    //   complete: () => {
    //     wx.hideLoading();
    //   }
    // });
  },

  // 表单验证
  validateForm: function() {
    const { name, phone } = this.data.contactInfo;
    
    if (!name) {
      wx.showToast({
        title: '请填写联系人姓名',
        icon: 'none'
      });
      return false;
    }
    
    if (!phone) {
      wx.showToast({
        title: '请填写联系人手机号',
        icon: 'none'
      });
      return false;
    }
    
    // 手机号格式验证
    const phoneRegex = /^1[3-9]\d{9}$/;
    if (!phoneRegex.test(phone)) {
      wx.showToast({
        title: '请输入正确的手机号',
        icon: 'none'
      });
      return false;
    }
    
    return true;
  },

  // 保存联系人
  saveContact: function() {
    if (this.data.contactInfo.name && this.data.contactInfo.phone) {
      let contacts = wx.getStorageSync('contacts') || [];
      
      // 如果设为默认联系人，将其他联系人的默认状态取消
      if (this.data.contactInfo.isDefault) {
        contacts = contacts.map(item => {
          return {
            ...item,
            isDefault: false
          };
        });
      }
      
      // 检查是否已存在该联系人
      const index = contacts.findIndex(item => item.phone === this.data.contactInfo.phone);
      
      if (index > -1) {
        // 更新联系人
        contacts[index] = this.data.contactInfo;
      } else {
        // 添加新联系人
        contacts.push(this.data.contactInfo);
      }
      
      wx.setStorageSync('contacts', contacts);
    }
  }
});